package veilingsite.beans.nl;

import java.sql.Timestamp;
import java.util.ArrayList;


public class VeilingBean extends BaseBean {
	public static final char EURO_CHAR = '\u20AC';
	
	private int id;
	private double startPrijs;
	private int eigenaarId;
	
	private String veilingNaam;
	private String beschrijving;
	private String imageLink;
	
	private boolean isVoorbij;
	
	private Timestamp beginDatum;
	private Timestamp sluitingsDatum;
	private ArrayList<BodBean> biedingen;
	
	public VeilingBean(){
		super();
		biedingen = new ArrayList<BodBean>();
	}
	
	public int getId(){ return id;}
	public int getEigenaarId(){ return eigenaarId; }
	public String getVeilingNaam(){ return veilingNaam; }
	public String getBeschrijving(){ return beschrijving; }
	public String getImageLink(){ return imageLink; }
	public double getStartPrijs(){ return startPrijs; }
	public Timestamp getBeginDatum(){ return beginDatum; }
	public Timestamp getSluitingsDatum(){ return sluitingsDatum; }
	public ArrayList<BodBean> getBiedingen(){ return biedingen; }
	public boolean getIsVoorbij(){ return isVoorbij; }
	
	public void setVeilingId(int newId){ id = newId; }
	public void setStartPrijs(double newStartPrijs){ startPrijs = newStartPrijs; }
	public void setEigenaarId(int newEigenaarId){ eigenaarId = newEigenaarId; }
	public void setVeilingNaam(String newVeilingNaam){ veilingNaam = newVeilingNaam; }
	public void setBeschrijving(String newBeschrijving){ beschrijving = newBeschrijving; }
	public void setImageLink(String newImageLink){ imageLink = newImageLink; }
	public void setBeginDatum(Timestamp newBeginDatum){ beginDatum = newBeginDatum;	}
	public void setSluitingsDatum(Timestamp newSluitingsDatum){ sluitingsDatum = newSluitingsDatum; }
	public void setBiedingen(ArrayList<BodBean> newBiedingen){ biedingen = newBiedingen; }
	public void setIsVoorbij(boolean newBoolean){ isVoorbij=newBoolean; }

	public void setAll(int newId, double newStartPrijs, int newEigenaarId, String newVeilingNaam,
			String newBeschrijving, String newImageLink, Timestamp newBeginDatum,
			Timestamp newSluitingsDatum, ArrayList<BodBean> newBiedingen,
			boolean newIsVoorbij){
		id				= newId;
		startPrijs		= newStartPrijs;
		eigenaarId		= newEigenaarId;
		veilingNaam		= newVeilingNaam;
		beschrijving	= newBeschrijving;
		imageLink		= newImageLink;
		isVoorbij		= newIsVoorbij;
		beginDatum		= newBeginDatum;
		sluitingsDatum	= newSluitingsDatum;
		biedingen		= newBiedingen;
	}
	
	
	public void voegBodToe(BodBean newBod){
		biedingen.add(newBod);
	}
	
	public double getHoogsteBod(){
		BodBean hoogsteBod = new BodBean();
		for (BodBean b : biedingen){
			if(b.getBod() > hoogsteBod.getBod() ){
				hoogsteBod = b;
			}
		}
		return hoogsteBod.getBod();
	}
	

	public String getResterendeTijd(){
		if ( sluitingsDatum != null){
			if (System.currentTimeMillis() > sluitingsDatum.getTime() ){
				return "Veiling is gesloten";
			}
			
			long tijdBegin = System.currentTimeMillis();
			long tijdEind = sluitingsDatum.getTime();
			long difference = Math.abs(tijdEind - tijdBegin); 
			long dagen = difference / (1000*60*60*24);
			long uren = (difference % (1000*60*60*24)) / (1000*60*60);
			long minuten = (difference % (1000*60*60)) / (1000*60);
			return dagen+ " dagen en " + uren + " uren en " + minuten + " minuten "; 
		} else {
			return null;
		}
	}
	
	public String getFormattedBeginDatum(){
		return formatTimestamp(beginDatum);
	}
	
	public String getFormattedSluitingsDatum(){
		return formatTimestamp(sluitingsDatum);
	}
	
	public String getFormattedHoogsteBod(){
		return formatDouble(getHoogsteBod());
	}
	
	public String getFormattedStartPrijs(){
		return formatDouble(startPrijs);
	}
	
	public boolean isVoorbij(){
		return (System.currentTimeMillis() > sluitingsDatum.getTime() );
	}
	
	public ArrayList<String> getBiedingenStrings(){
		ArrayList<String> formattedBiedingenStrings = new ArrayList<String>();
		for (BodBean b : biedingen){
			formattedBiedingenStrings.add(formatDouble(b.getBod()));
		}
		return formattedBiedingenStrings;
	}
	

}
